Сотрудники "Кросс-Информ" прошли все этапы развития веб-технологий: от разработки проектов с использованием классического ASP/ASP.NET, затем ASP.NET MVC до современного подхода с использование SPA фреймворков для фронтенда и REST сервисов для бэкенда, построенного на ASP.NET Core, и gRPC/gRPC-Web.

 

ВЕБ-РАЗРАБОТКА


Одной из ключевых компетенций компании "Кросс-Информ" является веб-разработка. В своей работе над веб-проектами мы используем следующие технологии.

HTML – язык гипертекстовой разметки, неизменная основа всего веб-программирования.

CSS – каскадные таблицы стилей, фактически язык описывающий визуальное представление объектов HTML. Если HTML задает структуру представления, то стили определяют как они должны выглядеть.

CSS препроцессоры – так называемый синтаксический сахар для CSS, позволяющий структурировать и упростить разработку стилей за счет использования возможностей недоступных в CSS. CSS препроцессоры трансформируют код написанный на своем языке в обычный CSS совместимый с современными браузерами. Наиболее известные препроцессоры: LESS, SASS

JavaScript – интерпретируемый язык, обработка которого обеспечивается веб-браузерами, позволяет реализовать интерактивные сценарии взаимодействия с пользователем, серверной частью приложения и сторонними сервисами.

TypeScript – язык программирования разработанный Microsoft, дополняющий возможности JavaScript современными подходами к программированию. TypeScript является обратно совместимым в JavaScript и по факту компилируется в него, поэтому совместим с любым современным веб-браузером.

jQuery – библиотека расширений для JavaScript, предоставляющая удобные инструменты для работы с объектной моделью HTML и также API для работы с AJAX и REST сервисами.

SPA фреймворки – библиотеки для разработки веб-приложений типа single page application (SPA). Обеспечивают полностью динамический контент, страница в веб-браузере способна полностью изменять свою структуру в зависимости от действий пользователя и взаимодействия с сервером, без необходимости полной перезагрузки и повторной инициализации в браузере. Предоставляет улучшенное юзабилити, работу с динамическими данными и структурами, возможности url роутинга, поддержку кеширования, и лучшее время отклика. Загрузка страницы происходит только один раз, в дальнейшем вся логика и весь контент работают и подгружаются по мере необходимости в процессe работы пользователя с приложением. Основные фреймворки: Angular, Vue, React.

WebSockets – технология двунаправленной коммуникации между сервером и клиентом, в данном случае браузером, является частью спецификации HTML5. Позволяет реализовать обмен данными в режиме реального времени.

JSON – java script object notation, открытый стандарт формата данных в человеко-читаемом виде для передачи объектов между разными системами. Лежит в основе всей коммуникации между клиентской частью приложения (в веб-браузере) и серверной частью (backend сервисами).

REST - архитектурный стиль взаимодействия компонентов распределённого приложения в сети. Используется как при разработке серверной части веб-приложения (backend) так и при создании распределенных приложений на микросервисной архитектуре. Фактически REST – это спецификация из набора URL методов, типов HTTP запроса (GET, POST, PUT, DELETE, PATCH), JSON схем описывающих структуры запросов и ответов сервиса, и возможные статусы кодов. Как правило, веб-сервисы реализуются в виде RESTful сервисов, ранее использовались веб-сервисы на основе SOAP/XML – но сейчас практически вытеснены, из-за неудобства их использования в том числе в веб-браузерах. В качестве стандарта описания REST сервисов обычно используется спецификация OpenAPI (Swagger) либо RAML. Спецификация позволяет автоматически сгенерировать клиентскую библиотеку работы с удаленным API практически для любого современного языка.

gRPC – более новый стандарт взаимодействия для сервисов от компании Google, в основе которого лежит:

  • Использование HTTP/2 (в REST используется HTTP/1.1).
  • Бинарный протокол сериализации данных protobuf, что уменьшает нагрузку на сеть за счет меньшего размера передаваемых данных и увеличивает производительность обработки запросов.
  • Встроенные возможности двусторонней коммуникации клиента и сервера.
    В качестве недостатка можно считать более сложную интеграцию для frontend приложений (Angular, Vue, React): из-за использования бинарного формата передачи данных и использования HTTP/2 требуется промежуточная прослойка между веб-браузером и gRPC сервисом. Проблема решается за счет технологии gRPC-Web, по сути, это gateway встроенный в ASP.NET Core для поддержки браузеров, либо второй вариант - за счет перекодирования в gRPC JSON – при котором браузеры способны вызывать методы сервиса используя традиционные подходы REST.

ASP.NET MVC - фреймворк для разработки веб-приложений, реализующий известный шаблон проектирования Model-View-Controller. Схема архитектуры MVC разделяет приложение на три основных компонента: модель, представление и контроллер. Платформа ASP.NET MVC представляет собой альтернативу подходу веб-форм ASP.NET при создании веб-приложений, и является легковесной платформой отображения с широкими возможностями юнит тестирования.

ASP.NET Core – дальнейшее развитие фреймворка для создания как классических ASP.NET MVC Core приложений, так и REST или gRPC сервисов, используемых в качестве бэкенда для веб-приложения или в качестве самостоятельного сервиса, с поддержкой разворачивания решения на Linux и Windows операционных системах.

Технологии веб-разработки непрерывно развиваются. Специалисты компании "Кросс-Информ" прошли все этапы от разработки проектов с использованием классического ASP/ASP.NET, затем ASP.NET MVC и современного подхода с использование SPA фреймворков для фронтенда и REST сервисов для бэкенда построенного на ASP.NET Core, и gRPC/gRPC-Web для построения распределенных приложений на базе микросервисов.